package cn.xingzhe.monster.user.domain.service;

import cn.xingzhe.monster.user.domain.enums.CaptchaTypeEnum;

/**
 * 消息发送服务接口
 * 负责发送验证码消息（邮件或短信）
 *
 * @author System
 * @version 1.0.0
 * @since 2024-01-01
 */
public interface MessageSender {

    /**
     * 发送注册验证码
     *
     * @param recipient 接收者（邮箱或手机号）
     * @param code      验证码
     */
    void sendRegisterCaptcha(String recipient, String code);

    /**
     * 发送登录验证码
     *
     * @param recipient 接收者（邮箱或手机号）
     * @param code      验证码
     */
    void sendLoginCaptcha(String recipient, String code);

    /**
     * 发送验证码（根据类型自动选择）
     *
     * @param recipient 接收者（邮箱或手机号）
     * @param code      验证码
     * @param type      验证码类型
     */
    default void sendCaptcha(String recipient, String code, CaptchaTypeEnum type) {
        if (type == CaptchaTypeEnum.REGISTER) {
            sendRegisterCaptcha(recipient, code);
        } else {
            sendLoginCaptcha(recipient, code);
        }
    }

    /**
     * 判断是否支持该接收者类型
     *
     * @param recipient 接收者（邮箱或手机号）
     * @return 是否支持
     */
    boolean supports(String recipient);
}

